#define _CRT_SECURE_NO_WARNINGS 
//#include<stdio.h>
//#include<string.h>
//#include<stdlib.h>
//#include<math.h>
//#define MAXSIZE 100005
//int diedai[MAXSIZE];
//int visited[MAXSIZE] = { 0 };
//int sum = 0;
//int isPrime(int num)
//{
//	if (num < 2)
//	{
//		return 0;
//	}
//	else
//	{
//		for (int i = 2; i <= sqrt(num); i++)
//		{
//			if (num % i == 0)
//			{
//				return 0;
//			}
//		}
//		return 1;
//	}
//}
//int change(int num)
//{
//	int ans = 0;
//	while (num)
//	{
//		int i = num % 10;
//		ans += i * i;
//		num /= 10;
//	}
//	return ans;
//}
//int isfortun(int num)
//{
//	if (visited[num])
//	{
//		return -1;
//	}
//	int mp[MAXSIZE] = { 0 };
//	mp[num] = 1;
//	int x = num;
//	int cnt = 0;
//	while (x != 1)
//	{
//		int later = change(x);
//		cnt++;
//		if (later == 1)
//		{
//			return cnt;
//		}
//		visited[later] = 1;
//		if (mp[later])
//		{
//			visited[later] = 1;
//			return -1;
//		}
//		mp[later] = 1;
//		x = later;
//	}
//	return 0;
//}
//int main()
//{
//	int A = 0;
//	int B = 0;
//	scanf("%d %d", &A, &B);
//	int i = 0;
//	for (i = A;i <= B; i++)
//	{
//		if (visited[i])
//			continue;
//		int a = isfortun(i);
//		if (a == -1)
//		{
//			visited[i] = 1;
//		}
//		else
//		{
//			diedai[i] = a;
//		}
//	}
//	int cnt = 0;
//	for (i = A; i <= B; i++)
//	{
//		if (!visited[i])
//		{
//			int flag = isPrime(i);
//			sum = diedai[i] * ((flag) ? 2 : 1);
//			if (cnt != 0)
//			{
//				printf("\n");
//			}
//			printf("%d %d", i, sum);
//			cnt++;
//		}
//	}
//	if (cnt == 0)
//	{
//		printf("SAD\n");
//	}
//	return 0;
//}
//#include<stdio.h>
//#include<math.h>
//#include<stdlib.h>
//#define MAXSIZE 100005
//int diedai[MAXSIZE];
//int visited[MAXSIZE] = { 0 };
//int sum = 0;
//int isPrime(int num)
//{
//	if (num == 2 || num == 3)
//	{
//		return 1;
//	}
//	if (num % 6 != 1 && num % 6 != 5)
//	{
//		return 0;
//	}
//	for (int i = 5; i * i <= num; i+= 6)
//	{
//		if ((num % i == 0) || (num % (i + 2) == 0))
//		{
//			return 0;
//		}
//	}
//	return 1;
//}
//int change(int num)
//{
//	int ans = 0;
//	while (num)
//	{
//		int t = num % 10;
//		ans += t * t;
//		num /= 10;
//	}
//	return ans;
//}
//int isfortun(int num)
//{
//	if (visited[num])
//	{
//		return -1;
//	}
//	int mp[MAXSIZE] = { 0 };
//	mp[num] = 1;
//	int x = num;
//	int cnt = 0;
//	while (x != 1)
//	{
//		int later = change(x);
//		cnt++;
//		if (later == 1)
//		{
//			return cnt;
//		}
//		visited[later] = 1;
//		if (mp[later])
//		{
//			visited[later] = 1;
//			return -1;
//		}
//		mp[later] = 1;
//		x = later;
//	}
//	return 0;
//}
//int main()
//{
//	int A = 0;
//	int B = 0;
//	scanf("%d %d", &A,& B);
//	int i = 0;
//	for (i = A; i <= B; i++)
//	{
//		if (visited[i])
//		{
//			continue;
//		}
//		int a = isfortun(i);
//		if (a == -1)
//		{
//			visited[i] = 1;
//		}
//		else
//		{
//			diedai[i] = a;
//		}
//	}
//	int cnt = 0;
//	for (i = A; i <= B; i++)
//	{
//		if (!visited[i])
//		{
//			int flag = isPrime(i);
//			int result = diedai[i] * ((flag) ? 2 : 1);
//			if (cnt != 0)
//			{
//				printf("\n");
//			}
//			printf("%d %d", i, result);
//			cnt++;
//		}
//	}
//	if (cnt == 0)
//	{
//		printf("SAD\n");
//	}
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//	int n = 0;
//	int k = 0;
//	scanf("%d %d", &n, &k);
//	double A = 0.0;
//	int count_A = 0;
//	int count_B = 0;
//	double B = 0.0;
//	int i = 0;
//	for (i = 1; i <= n; i++)
//	{
//		if (i % k == 0)
//		{
//			A += i;
//			count_A++;
//		}
//		else
//		{
//			B += i;
//			count_B++;
//		}
//	}
//	//printf("%lf %lf %d %d", A, B, count_A, count_B);
//	A /= count_A;
//	B /= count_B;
//	printf("%.1lf %.1lf", A, B);
//	return 0;
//}
//#include <stdio.h>
//#include <stdlib.h>
//
//int main(int argc, char* argv[])
//{
//    int P;
//    int Q;
//    int R;
//    for (P = 0; P < 2; P++)
//    {
//        for (Q = 0; Q < 2; Q++)
//        {
//            for (R = 0; R < 2; R++)
//            {
//                if ((P || Q) && (!P || R) && (!Q || R))
//                {
//                    printf("%d %d %d\n", P, Q, R);
//                }
//            }
//        }
//    }
//    return 0;
//}
//#include<stdio.h>
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int count = 1;
//    while(n != 1)
//	{
//		n /= 2;
//		count++;
//	}
//	printf("%d", count);
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int i = 0;
//	int j = 0;
//	int k = 1;
//	for (i = 0; i < n; i++)
//	{
//		for (j = 1; j <= n - i; j++)
//		{
//			printf("%02d", k++);
//		}
//		printf("\n");
//	}
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int count = 0;
//	int temp = n;
//	int count_sum = 0;
//	int count_even = 0;
//	int count_odd = 0;
//	while (temp)
//	{
//		temp /= 10;
//		count_sum++;
//	}
//	/*temp = n;
//	int found = 0;*/
//	int count_digit = 0;
//	for (int i = 1; i <= n; i++)
//	{
//		while (i)
//		{
//			int t = i % 10;
//			count++;
//			if (count % 2 != 0)
//			{
//				if (t % 2 != 0)
//				{
//					count_odd++;
//				}
//			}
//			else if (count % 2 == 0)
//			{
//				if (t % 2 == 0)
//				{
//					count_even++;
//				}
//			}
//		}
//		if (count_odd + count_even == count_sum)
//		{
//			count_digit++;
//		}
//	}
//	printf("%d\n", count_digit);
//	return 0;
//}
#include <stdio.h>

int main()
{
    int R = 0;
    int Q = 0;
    int P = 0;
    int result;
    printf("P Q R -> (P|Q)&(P->R)&(Q->R)\n");
    while (P < 2)
    {
        result = (P || Q) && (!P || R) && (!Q || R);
        printf("%d %d %d -> %d\n", P, Q, R, result);
        R++;
        if (R == 2)
        {
            Q++;
            R = 0;
            if (Q == 2)
            {
                P++;
                Q = 0;
            }
        }
    }
    return 0;
}